Members: Vasileios Sideris, Piotr Pietrzak, Davide Centorrino, Zacharias Zervos, Nicola Bovo
Student numbers: 5842727, 5717086, 5851629, 5846307, 5619157
In this comprehensive project, our objective is to analyze how the COVID-19 pandemic has specifically influenced the transportation of goods and passengers by sea within the European Economic Exclusive Area over a five-year period. We will examine changes in maritime transportation behavior and their direct impact on CO2 emissions, comparing maritime emissions to overall CO2 trends in the European region during the pandemic. This research aims to provide valuable insights into the adaptability and resilience of the maritime sector.
Main research question:What are the multifaceted impacts of the COVID-19 pandemic on maritime transportation and environmental sustainability within the European Economic Exclusive Area?
Sub-research questions:
How did the COVID-19 pandemic impact the volume and patterns of goods transported by sea within the European Economic Exclusive Area from 2017 to 2022?
What were the changes in passenger maritime transportation behaviors during the COVID-19 pandemic in the European Economic Exclusive Area, and how do they differ across various modes of sea travel?
How did the alterations in maritime transportation practices during the COVID-19 pandemic correlate with fluctuations in CO2 emissions in the European Economic Exclusive Area?
How do the changes in maritime CO2 emissions within the European Economic Exclusive Area during the COVID-19 pandemic compare to the broader CO2 emission trends across Europe, and what insights can be gained from this comparison for sustainable transportation strategies?
The COVID-19 pandemic has led to profound transformations across various sectors, including maritime transportation within the European Economic Exclusive Area. Despite limited media coverage, the maritime sector has not been exempt from the far-reaching effects of this unprecedented event. This comprehensive research project focuses on examining the impacts of the pandemic on the movement of goods and passengers by sea over a five-year period, spanning from 2017 to 2022. By delving into changes in maritime transportation behavior and their direct consequences on CO2 emissions, this study aims to illuminate the adaptability and resilience of the maritime sector when faced with such challenges. To achieve this goal and establish a clear framework for understanding how the maritime industry was affected, various categories will be analyzed. These include changes in the volume and patterns of goods transported by sea, shifts in passenger maritime travel behaviors, and their correlation with CO2 emissions. Furthermore, the data will be compared with maritime CO2 emissions trends and contrasted with the broader regional CO2 emission patterns, offering valuable insights for sustainable transportation strategies in the European region.
Firstly, all the needed packages will be imported. These data are necessary to properly plot the processed data. Specifically, all the datasets are processed in 'dataprocessing.py', and the obtained results consist of multiple CSV files containing the most valuable processed data, which can be effectively plotted.
import pandas as pd
import numpy as np
import pycountry as pc
import plotly
import plotly_express as px
import seaborn as sb
import os
import matplotlib.pyplot as plt
import geopandas as gpd
import warnings
import plotly.graph_objects as go
#path for universal data reading - vscode does not use the relative path by default
datapath = os.path.abspath("") + "\\DATA_PROCESSED\\"
#make px and go plots visible in html export
plotly.offline.init_notebook_mode()
#supress futurewarnings
warnings.simplefilter(action="ignore", category=FutureWarning)
This section focuses on the analysis of the patterns of goods transported by sea within the European Economic Area (EEA) during the period from 2018 to 2022. To conduct this analysis, the following dataset, available at https://ec.europa.eu/eurostat/databrowser/bookmark/662cc15a-0555-4b7f-87c8-e48013aea8c0?lang=en, is used. This dataset provides information on the gross weight of goods transported to/from the main ports in the EEA on a quarterly basis.
The following parts aim to visually present these patterns and investigate the impact of the COVID-19 pandemic on the volume and patterns of goods transported by sea within the EEA from 2018 to 2022.
In order to visualize the data, preprocessing of the dataset was deemed necessary. During the preprocessing of the relevant dataset (mar_go_qm__custom_93281_linear.csv), several steps were taken. First, several irrelevant columns were removed, and the headers of the remaining columns were corrected. The dataset included data for 26 countries, along with more specific details about the main ports in each country. However, this level of detail was considered irrelevant for the current analysis and was therefore removed. Furthermore, most countries had data available until Q4 of 2022, so any data beyond that period was also removed. Furthermore, using the 'pycountry' library, the full names of the countries were added since the dataset originally contained only the two-letter country codes (alpha-2). Finally, the table structure was reorganized, with the 26 countries serving as column headers and the quarters from 2017 to 2022 as rows. The aformentioned procedure is executed in the 'dataprocessing.py' file. The post-processed file, "df_cargo_mar.csv", will be used as input in the following sections for visualization purposes.
Read relevant processed dataset:
cargo_path = datapath + "df_cargo_mar.csv"
df_cargo = pd.read_csv(cargo_path)
# Use first column (quarters) as the row index
df_cargo = df_cargo.set_index(df_cargo.columns[0])
Chronological representation of the changes in the transportation of goods - top 5 most affected countries
As previously mentioned, data was available for a total of 26 countries. However, presenting all these countries on a single line graph would make the graph challenging to read and interpret. Thus, a decision was made to focus on the top 5 most affected countries. These countries were ranked based on the impact of the COVID-19 pandemic, which emerged in 2019 and significantly disrupted the global economy.
To rank the countries, data from the years 2019 and 2020 was used. This choice was made to focus solely on the impact of COVID-19 and to exclude other economic and political factors that might have influenced each country's shipping trade. Specifically, we identified the maximum value of goods transported during the four quarters of 2019 as the highest point for each country, and the minimum value for the four quarters of 2020 as the lowest point for each country. This resulted in a change rate represented as a percentage for each country.
# Find the maximum for each country in 2019
max_2019 = df_cargo.loc["2019-Q1":"2019-Q4"].max()
# Find the maximum for each country for 2020
min_2020 = df_cargo.loc["2020-Q1":"2020-Q4"].min()
# Find the percentage change for each coutry between 2019-2020
change = (max_2019 - min_2020) / max_2019 * 100
# Short the countries by percentage change (desceding)
most_affected_countries = change.sort_values(ascending=False)
# Filter the data that are going to be ploted for the interval 2018-Q1 to 2022-Q4
filtered_data = df_cargo[most_affected_countries.head(5).index].loc["2018-Q1":"2022-Q4"]
# Plot
plt.figure(figsize=(10, 5))
sb.lineplot(data=filtered_data)
plt.xlabel("Time")
plt.ylabel("Cargo [tons]")
plt.title("Shipped goods for top 5 most affected countries")
plt.xticks(rotation=45, ha="right")
plt.legend(loc="upper right")
plt.grid(True)
plt.show()
As depicted in the graph, the volume of shipped cargo for each country exhibits moderate fluctuations over time. However, the impact of COVID-19 is evident in the simultaneous decline in maritime trade. The graph reveals a steady decline for each country that initiated around Q4 2019 and Q1 2020. Notably, every country reached a low almost simultaneously in Q2 and Q3 of 2020. Finally, most countries have managed to recover from the effects of the pandemic, with their trade activities returning to normal (pre-COVID-19) levels by the end of 2022.
Chronological representation of the changes in the transportation of goods - top 5 trading countries
The same analysis can be conducted for the top 5 leading countries in terms of the gross weight of goods. To rank these countries based on their shipping dominance, we considered the highest value of goods transported during the four quarters of 2019. This approach allows for a more reliable conclusion to be drawn regarding the pattern of sea-transported goods before, during and after COVID-19 pandemic.
# Short the countries by amount of transported goods
leading_countries = max_2019.sort_values(ascending=False)
# Filter the data that are going to be ploted for the interval 2018-Q1 to 2022-Q4
filtered_data = df_cargo[leading_countries.head(5).index].loc["2018-Q1":"2022-Q4"]
# Plot
plt.figure(figsize=(10, 5))
sb.lineplot(data=filtered_data)
plt.xlabel("Time")
plt.ylabel("Cargo [tons]")
plt.title("Shipped goods for top 5 top trading countries")
plt.xticks(rotation=45, ha="right")
plt.legend(loc="upper right")
plt.grid(True)
plt.show()
Similar to the previous graph, yearly fluctuations are noticeable for each country. What is evident is the sudden decrease in sea trading activity for each country, with a minimum point occurring around the middle of the year 2020. All of the countries seem to have overcome the disruptions to their trading activity, as by the end of 2022, they are either slightly lower or at the same levels as before the COVID-19 pandemic. It's worth noting that Turkey does not appear to have been heavily influenced by the COVID-19 pandemic, as there is a steady increase over the studied period. Additionally, it should be mentioned that the United Kingdom seems to have been significantly affected after Q4 of 2019. However, it's important to acknowledge that the dataset only included data up to Q2 of 2020 for UK, which is why this specific line extends only until that point.
Choropleth map displaying the impact on the imports/exports of goods in EEA
In this section, an attempt is made to visualize the impact of COVID-19 on the shipping activity of all countries with available data on an actual map of Europe. This approach allows us to draw conclusions regarding the geographical position and response of each country to the pandemic.
First, a shapefile (.shp) containing geometric data of Europe is uploaded to the remote repository, and then it is read.
file_path = os.path.abspath("") + "\\european_map.shp\\NUTS_RG_20M_2021_3035.shp"
europe = gpd.read_file(file_path)
Creation of the map:
#Make a dictionary with countries as keys and their % change as values
countries_with_effect = change.to_dict()
# create a new dictionary with 2-letter codes as keys
countries_with_effect_alpha2 = {}
for country_name, value in countries_with_effect.items():
if country_name == "Greece":
countries_with_effect_alpha2["EL"] = value # shp file has EL instead of GR
elif country_name == "United Kingdom":
countries_with_effect_alpha2["UK"] = value # shp file has UK instead of GB
else:
country = pc.countries.get(name = country_name)
if country:
countries_with_effect_alpha2[country.alpha_2] = value
# All european countries in GeoDataFrame as keys in a dictionary with 0 values
countries_final = {key: 0 for key in europe['CNTR_CODE'].unique()}
# Merge the two dictionaries, giving priority to the first one
merged_dict_of_countries = {**countries_final, **countries_with_effect_alpha2}
# Create a new column named "PercentageChange" in the europe20 GeoDataFrame
europe["PercentageChange"] = europe["CNTR_CODE"].map(merged_dict_of_countries)
fig, ax = plt.subplots(1, 1, figsize=(15, 10))
ax.set_xlim(0.25e7, 0.74e7)
ax.set_ylim(0.13e7, 0.55e7)
ax.set_title("Impact on the shipment of goods between 2019-2020 in EEA. (some countries are not investigated - light beige collor)")
europe.plot(column="PercentageChange", cmap='Oranges', linewidth=0.01, ax=ax, edgecolor='0.8', legend=True, cax=ax.get_figure().add_axes([0.95, 0.15, 0.04, 0.7]))
ax.get_figure().get_axes()[1].set_title("Percentage change in the shipment of goods")
plt.show()
It should be noted that there is no available data for some countries, such as Iceland. Additionally, this analysis is, of course, irrelevant for certain countries within the EEA that do not have sea borders, such as Slovakia and Hungary. Therefore, these countries are represented with a light beige color on the map.
As observed from the map, sea trading in northwestern Europe (United Kingdom and Ireland) appears to be more affected when compared to southeastern Europe (Greece and Turkey). Western European countries, including Italy, the Netherlands, Belgium, Germany, France, and Spain, experienced a moderate average decrease of 15%. Portugal, however, saw a decrease of over 20%, while Malta was the most affected with a significant 65% decrease in sea trading. Eastern Europe was also notably affected, with decreases in sea trading in countries like Romania, Bulgaria, and Latvia reaching 25%, 35%, and 40%, respectively.
This section focuses on the analysis of the pattern of passenger travels in European Economic Area during the period 2018-2022 (extending into Q1 and Q2 of 2023 for some reporting countries). To conduct this analysis, three datasets from Eurostat were used, one for aviation, maritime and rail passenger transport data in European countries. They are available under the following links and for the purpose of this project, they were accessed on 20-10-2023:
The focus of the analysis is to establish the general trends of the volume of passenger transport in European countries, visualize the impact of the COVID-19 pandemic on passenger transport and take a closer look at some countries most affected by the pandemic in terms of maritime passenger transport.
The datasets were downloaded in the form of .csv files from the website and preprocessed in the dataprocessing.py file by cutting out the columns with irrelevant data and appending a column with the passenger numbers normalized through division by the number of passengers in the top quarter of 2019 in terms of transport volume, per country.
In case of the maritime transport dataframe, the data was structured in a slightly different way from other transport modes - the passenger counts were given per reporting entity, as opposed to per country. Some countries had multiple reporting entities, such as Sweden or Denmark. Luckily, the reporting entity codes started with the code of their respective countries, so they only needed to be summed to obtain results of the same type as other transport modes. Additionally, several countries' data was missing in certain time periods:
Because in the specified periods the passenger count was equal to zero, their data was useless for this study, because the trends would be incomplete. Additionally, if the data was missing from at least Q2 of 2020, no valid passenger transport volume drop could be calculated. The decision was therefore made to cut out the data by simply deleting the passenger values for certain periods of time, so that the plots would not be cluttered with invalid information. Then, the unit of passenger counts was converted from thousands of passengers to passengers. Afterwards, since the data in this dataset started from the year 2017, only the data from years 2018-2023 was kept for easy comparison with other transport modes.
In case of rail transport dataframe, first, the data in the unit of thousands of passengers was first separated from the data in the unit of millions of km travelled. Then, a similar operation to maritime passenger dataset was performed, where missing data for certain countries was removed. All countries affected were missing data entirely, over the entire time range of the dataset. Those countries were Austria, Belgium, Serbia, Bosnia and Herzegovina as well as all combined data for EU: EU27 (2020), EU28 and EU27 (2007). Then, the unit of passenger counts was converted from thousands of passengers to passengers. Afterwards, the dataset was cut to the time range of 2018-2023.
Load relevant processed datasets
df_passengers_avia = pd.read_csv(datapath + "df_passengers_avia.csv").iloc[:,1:]
df_passengers_mar = pd.read_csv(datapath + "df_passengers_mar.csv").iloc[:,1:]
df_passengers_rail = pd.read_csv(datapath + "df_passengers_rail.csv").iloc[:,1:]
Visualisation of general trends in passenger transport across European countries per transport mode
First, a simple collection of line plots were created to showcase the trends of passenger transport in Europe between 2018 and 2023. To do this, the normalized passenger counts for each country and each quarter of the time range were plotted together - for this, no additional data processing was needed. As mentioned in the first paragraph of this chapter, some countries had missing data in various parts of the time range, which can be seen in the graph.
Q1_fig1a = px.line(df_passengers_avia,
x='Time_period',
y='Norm_2019',
color='Geo',
title='Aviation passenger transport volume in Europe, normalized for highest quarter of 2019 per country',
labels={'Time_period':'Time period','Norm_2019':'Normalized passenger transport volume [%]','Geo':'Country code'})
Q1_fig1b = px.line(df_passengers_mar,
x='Time_period',
y='Norm_2019',
color='Geo',
title='Maritime passenger transport volume in Europe, normalized for highest quarter of 2019 per country',
labels={'Time_period':'Time period','Norm_2019':'Normalized passenger transport volume [%]','Geo':'Country code'})
Q1_fig1b.update_xaxes(tickangle=30)
Q1_fig1c = px.line(df_passengers_rail,
x='Time_period',
y='Norm_2019',
color='Geo',
title='Rail passenger transport volume in Europe, normalized for highest quarter of 2019 per country',
labels={'Time_period':'Time period','Norm_2019':'Normalized passenger transport volume [%]','Geo':'Country code'})
Q1_fig1c.update_xaxes(tickangle=30)
Q1_fig1a.show()
Q1_fig1b.show()
Q1_fig1c.show()
From the normalized passenger transport graphs it can be deduced that the three transport modes differed significantly from each other in terms of general trends in European countries. While aviation and maritime transport saw significant peaks in every third quarter of a year (likely attributable to people preferring to go on vacations and travel by air or by water during summer), rail transport was more or less constant for most depicted countries.
All three transport modes saw a significant dip in Q2 of 2020, when the first COVID-19 regulations were introduced, but it is clear that the most significantly regulated mode of transport was air travel - all European countries saw aviation passenger transport drop to below 10% of their respective 2019 norms. On the other hand, for other transport modes, these regulations varied from country to country in terms of severity, because of a much broader observed spread of normalized passenger transport volume readings for these countries. This is especially visible in rail travel, where some countries maintained over 50% of their 2019 norm in Q2 of 2020. Maritime passenger transport in most countries was subject to much less significant reductions in volume when comparing the graphs before and after the introduction of COVID-19 measures in Q2 of 2020, especially when compared to other means of transport. This is probably due to its much smaller absolute volume of passengers and a tendency of transport areas on ferries to be less cramped. Lastly, it can be observed that after the first introduction of COVID-19 regulations in europe, the rail transport patterns were climbing back up to the numbers before those regulations were introduced. However, the paces at which they were returning to their norms differed greatly from country to country, resulting in a much wider spread of each country's line depicting the normalized transport volume.
Bar graph of drop in normalized maritime passenger transport volume
The next part of this chapter focuses on the magnitude of drop in normalized maritime passenger transport volume. In order to perform this analysis, some additional data processing was required. For every country in the maritime passenger transport dataframe, the difference between normalized passenger transport volumes in Q2 of 2019 and in Q2 of 2020 was calculated. The intention of this action was to pick 3 top countries in terms of the drop in maritime passenger volume when the COVID-19 regulations were introduced in Europe. Then, for each of the three countries a separate line graph would be created, where the trends in all three listed means of travel would be compared for those countries. While the top country in terms of the drop in maritime passenger volume was Belgium, for each quarter after Q1 of 2020, the numbers of passengers transported through maritime means of transport in that country kept repeating 2000 or 4000, all the way until Q2 of 2023 when the database ends. This, together with the fact that there was no data provided on the passenger travel by rail in Belgium, led to the conclusion that this country needs to be disregarded in this analysis, with the top 3 countries being selected as those coming after Belgium. This is why, for clarity on the bar graph, the dataframe with the maritime passenger volume drop was split into three parts, one being Belgium, second being the top three countries coming after Belgium, and the third being the rest. The top three countries after Belgium were given a distinguishing blue color in the bar graph, as can be seen below.
mar_countries = list(df_passengers_mar['Geo'].unique())
mar_per_diff = pd.DataFrame(columns=['Geo','Passenger_drop'])
diff_index=0
for country in mar_countries:
per_mq1 = df_passengers_mar[(df_passengers_mar['Geo'] == country) &
(df_passengers_mar['Time_period'] == '2019-Q2')]['Norm_2019'].to_numpy()[0]
per_mq2 = df_passengers_mar[(df_passengers_mar['Geo'] == country) &
(df_passengers_mar['Time_period'] == '2020-Q2')]['Norm_2019'].to_numpy()[0]
mar_per_diff = pd.concat([mar_per_diff,pd.DataFrame({'Geo':country,'Passenger_drop':per_mq1-per_mq2},index=[diff_index])])
diff_index += 1
# print(mar_per_diff)
mar_per_diff = mar_per_diff.sort_values(by='Passenger_drop',ascending=False)
mar_per_diff_rest1 = mar_per_diff.iloc[:1,:]
mar_per_diff_top = mar_per_diff.iloc[1:4,:]
mar_per_diff_rest2 = mar_per_diff.iloc[4:,:]
Q1_bardata = [go.Bar(x=mar_per_diff_rest1['Geo'],y=mar_per_diff_rest1['Passenger_drop'], name='Rest', marker_color=['lightslategray',]*len(mar_per_diff_rest1), showlegend=False),
go.Bar(x=mar_per_diff_top['Geo'],y=mar_per_diff_top['Passenger_drop'], name='Selected 3', marker_color=['darkblue',]*3, showlegend=False),
go.Bar(x=mar_per_diff_rest2['Geo'],y=mar_per_diff_rest2['Passenger_drop'], name='Rest', marker_color=['lightslategray',]*len(mar_per_diff_rest2), showlegend=False)]
Q1_fig2 = go.Figure(data = Q1_bardata)
Q1_fig2.update_layout(
title='Bar chart of percentage point drop in normalized maritime passenger volume (Q2 of 2019 vs Q2 of 2020)',
xaxis_title='Country code',
yaxis_title='Drop in normalized passenger transport volume')
Q1_fig2.show()
It is clear that the top three countries in terms of the magnitude of maritime passenger volume drop due to the COVID-19 pandemic after Belgium was removed from the analysis are Latvia (LV), Finland (FI) and the Netherlands (NL). The difference between the normalized passenger transport through maritime means in these countries equaled 71.7, 70.8 and 65.9 percentage points, respectively. Across Europe, these volume drops differed significantly from country to country and ranged from 77.3 percentage points in Belgium to as low as 8.8 percentage points in Lithuania. These differences can be attributed to the varying severity of COVID-19 related regulations these countries introduced, as well as the different views on social responsibility the inhabitants of those countries may have had at that time, both of which would cause the decline in the number of passengers transported.
Visualisation of combined modes of transport for countries with highest maritime passenger transport volume drop
The third part of this chapter focuses on the three countries with the highest drop in normalized maritime passenger transport volume between Q2 of 2019 and Q2 of 2020, as depicted on the previous bar graph. The chosen countries were Latvia, Finland and the Netherlands, due to lack of relevant data for Belgium. Since the intention of this chapter was to showcase the combined trends in all three transport modes for each of the chosen countries, some data processing was necessary. A nested for loop was created which, for every country from the list, for every quarter from the time range and for every mode of transport, appended a relevant row to a new dataframe, which combined all of the necessary data.
df_passengers_top = pd.DataFrame(columns=['Geo','Mode','Time_period','Norm_2019'])
for country in ['LV','FI','NL']:
index_top=0
for time in df_passengers_mar['Time_period'].unique():
for mode in ['Aviation','Maritime','Rail']:
if mode == 'Aviation':
df_mode = df_passengers_avia
elif mode == 'Maritime':
df_mode = df_passengers_mar
else:
df_mode = df_passengers_rail
norm_list = df_mode[(df_mode['Geo']==country) & (df_mode['Time_period']==time)]['Norm_2019'].to_list()
if not norm_list:
norm = np.NaN
else:
norm = norm_list[0]
df_passengers_top = pd.concat([df_passengers_top,pd.DataFrame({'Geo':country,'Mode': mode,'Time_period': time,'Norm_2019':norm},index=[index_top])])
index_top += 1
Q1_fig3a = px.line(df_passengers_top[df_passengers_top['Geo']=='LV'],
x='Time_period',
y='Norm_2019',
color='Mode',
title='Normalized volume of passenger transport by air, sea and rail in Latvia from 2018 to 2023',
labels={'Time_period': 'Time period', 'Norm_2019':'Normalized passenger transport volume [%]','Mode':'Means of travel'})
Q1_fig3a.update_xaxes(tickangle=30)
Q1_fig3b = px.line(df_passengers_top[df_passengers_top['Geo']=='FI'],
x='Time_period',
y='Norm_2019',
color='Mode',
title='Normalized volume of passenger transport by air, sea and rail in Finland from 2018 to 2023',
labels={'Time_period': 'Time period', 'Norm_2019':'Normalized passenger transport volume [%]','Mode':'Means of travel'})
Q1_fig3b.update_xaxes(tickangle=30)
Q1_fig3c = px.line(df_passengers_top[df_passengers_top['Geo']=='NL'],
x='Time_period',
y='Norm_2019',
color='Mode',
title='Normalized volume of passenger transport by air, sea and rail in the Netherlands from 2018 to 2023',
labels={'Time_period': 'Time period', 'Norm_2019':'Normalized passenger transport volume [%]','Mode':'Means of travel'})
Q1_fig3c.update_xaxes(tickangle=30)
Q1_fig3a.show()
Q1_fig3b.show()
Q1_fig3c.show()
In the plots above it can be observed that every listed country's normalized passenger transport volume was ordered in the same manner with respect to each transport mode's 2019 norm: the highest percentage of passenger transport volume was maintained by rail, while the lowest percentage was hit by air travel, with maritime transport between the two. In all listed countries, with the exception of a small spike in maritime travel in the Netherlands in Q3 of 2020 and another, more significant one in Q3 of 2022, rail travel dropped to the highest relative percentage of volume and stayed above the other transport modes to this day, even after European countries lifted the COVID_19 regulations.
The main focus of this section is to define how the COVID-19 pandemic has affected specific categories of ships. This chapter will primarily examine the impact on various types of ships, both in relation to each other and concerning total CO2 emissions. The selected ship categories include Bulk Carriers, Passenger Ships, Container Ships, LNG Carriers, and Oil Tankers. Additionally, the total CO2 emissions also encompass other types of ships sailing in the European Economic Area (EEA) between 2018 and 2022.
Data processing
The analyzed data has been obtained from the European dateset of ships which sailed in the EEA form 2018 to 2022 (https://data.europa.eu/data/datasets/co2-emissions-data?locale=en). There are five distinct datasets available, one for every year. Every ship that sailed in the EEA during the year is documented in each of these datasets, together with a variety of details (such as fuel usage, time spent at sea in hours, and CO2 emissions in tons). Additionally, these ships are separated into various groups. It has been determined to examine the five ship categories that are most pertinent, as previously stated.
First, the dataset was pooled, and any ship without information on CO2 emissions or amount of time at sea was eliminated. The sum of each ship's emission contribution has been used to compute the yearly total CO2 emissions and time spent at sea. Additionally, by dividing the total CO2 emission by the number of listed ships annually, the average CO2 emission in [tons] and the amount of time spent at sea by ship each year have been determined. The list of ships was then broken down into the chosen categories for each year, and the aforementioned average value for the parameters that were chosen was found. An extra list of ships not included in the previous ones has been created by removing the same numbers for total emissions and time spent at sea for each type of ship, in order to include all non-categorized ships.
The average CO2 emissions per ship type (df_ship_co2.csv), the total CO2 emissions by the maritime industry (df_ship_co2_total.csv'), the total CO2 emissions per category (df_ship_co2_final.csv), and the average time spent at sea for each ship type (df_ship_time.csv) have all been obtained in conclusion.
First, the processed data are imported.
co2 = pd.read_csv(datapath + 'df_ship_co2.csv')
co2_tot = pd.read_csv(datapath + 'df_ship_co2_total.csv')
co2_final = pd.read_csv(datapath + 'df_ship_co2_final.csv')
time = pd.read_csv(datapath + 'df_ship_time.csv')
Line graphs of CO2 emissions and sailing time for the selected ship catergories
Specifically, in the first graph, CO2 emissions in tons are plotted for each of the selected ship categories and compared to the total CO2 emissions of the maritime industry. In the following graph the average CO2 emissions per ship per year are provided.
fig, ax = plt.subplots(figsize=(12, 5))
ship_types = {
'Overall Average': ('CO2 per ship [t]', co2_tot),
'Bulk Carrier': ('Bulk carrier', co2),
'Passenger ship': ('Passenger ship', co2),
'Container ship': ('Container ship', co2),
'LNG carrier': ('LNG carrier', co2),
'Oil tanker': ('Oil tanker', co2)
}
colors = ['y','b', 'g', 'r', 'c', 'm']
for i, (ship_type, (column_name, data_source)) in enumerate(ship_types.items()):
data = data_source[data_source['Reporting Period'].isin(co2_tot['Reporting Period'])][column_name]
color = colors[i % len(colors)] # Cycle through the list of colors
ax.plot(co2_tot['Reporting Period'], data, label=ship_type, color=color)
ax.scatter(co2_tot['Reporting Period'], data, marker='o', s=50, color=color)
ax.set_title('CO2 emissions per ship per year')
ax.set_xlabel('Reporting Year')
ax.set_ylabel('CO2 per ship [t]')
plt.xticks([2018, 2019, 2020, 2021, 2022])
ax.legend(loc='upper left', bbox_to_anchor=(1.05, 1.0))
plt.grid(True)
plt.show()
Several key insights can be derived from the plot above. Firstly, it is evident that there is an overall decreasing trend in CO2 emissions for most of the ship types, except for passenger vessels. This decrease can be attributed to advancements in technologies related to emission reduction. Furthermore, the impact of the pandemic on these ship types is not particularly notable, except for passenger vessels. In contrast, passenger vessels significantly reduced their CO2 emissions as soon as the coronavirus began to spread globally. This aligns with the trend of the cruise industry. However, starting from the next year, 2021, emissions dramatically increased again, reaching pre-pandemic levels by 2022. Therefore, for this sector, it is less clear how technological improvements have affected CO2 emissions.
Furthermore, some notes should be made regarding the overall CO2 emissions from ships. As displayed in the previous plot, it is evident that the overall ship emissions were not largely affected by the COVID-19 pandemic. Instead, a slightly decreasing trend is visible, which may not be linked to the pandemic's effects. Therefore, despite the passenger sector holding a significant position in the European maritime industry, it is apparent that its impact on CO2 emissions is not as significant as that of other ship categories.
What was mentioned above can also be verified by examining the average time spent at sea per ship in the European Economic Area (EEA). In the following graph, these data are provided with a specific focus on the considered ship category.
fig, ax = plt.subplots(figsize=(12, 5))
ship_types = ['Bulk carrier', 'Passenger ship', 'Container ship', 'LNG carrier', 'Oil tanker']
colors = ['b', 'g', 'r', 'c', 'm']
for ship_type, color in zip(ship_types, colors):
data = time[ship_type]
ax.plot(time['Reporting Period'], data, label=ship_type, color=color)
ax.scatter(time['Reporting Period'], data, marker='o', s=50, color=color)
ax.set_title('Time spent at sea per ship per year')
ax.set_xlabel('Reporting Year')
ax.set_ylabel('Time per ship [hours]')
plt.xticks([2018, 2019, 2020, 2021, 2022])
ax.legend(loc='upper left', bbox_to_anchor=(1, 1))
plt.grid(True)
plt.show()
As expected, the time spent at sea by passenger vessels rapidly decreased on average as the COVID-19 pandemic and lockdowns took place in Europe, especially in 2020. This decrease is proportional to what was already observed for CO2 emissions. Furthermore, the general trend related to CO2 emissions for each ship category is coherent and proportional to the average time spent at sea. It can be noticed that bulk carrier ships are the least productive in terms of CO2 emissions per ship due to their lower time spent at sea per ship. Similarly, this can be observed for oil tankers.
However, a notable difference can be concluded when comparing container ships and LNG carriers. Despite LNG carriers spending less time at sea on average, their CO2 production is higher than that of container ships. This leads to the conclusion that, in terms of CO2 emissions, container ships outperform LNG carriers.
In conclusion, comparing the time spent at sea with CO2 emissions reveals that CO2 emissions from ships not only depend on technological improvements but also on a decrease in the time spent at sea in the European exclusive area by each ship, on average. The only exceptions are passenger ships and LNG carriers: the former was affected by the pandemic's effects in 2020, while the latter faced a decline in 2021 and rapid growth in 2022, which can be attributed to increased global demand for these ships, as the pandemic's effects had already begun to subside in the passenger industry in 2021.
Doughnut graphs with the percentage of CO2 emissions from each vessel category per year
years_to_display = [2018, 2019, 2020, 2021]
fig, axes = plt.subplots(2, 2, figsize=(8, 8))
for i, year in enumerate(years_to_display[:4]):
data = co2_final[co2_final['Reporting Period'] == year]
labels = data.columns[2:] # Labels for different ship type
values = data.iloc[0, 2:] # CO2 emissions values for each ship type
row = i // 2
col = i % 2
ax = axes[row, col] # Create a donut chart in the corresponding subplot
ax.pie(values, labels=labels, autopct='%1.1f%%', startangle=90, pctdistance=0.85)
center_circle = plt.Circle((0, 0), 0.70, fc='white')
ax.add_artist(center_circle)
ax.axis('equal')
ax.set_title(f' % C02 emission {year}', fontsize=12, y=.90)
plt.tight_layout()
plt.grid(True)
plt.show()
# Data for the year 2022
data_2022 = co2_final[co2_final['Reporting Period'] == 2022]
labels = data_2022.columns[2:]
values = data_2022.iloc[0, 2:]
fig, ax = plt.subplots(figsize=(3.2, 3.2))
ax.pie(values, labels=labels, autopct='%1.1f%%', startangle=90, pctdistance=0.85)
center_circle = plt.Circle((0, 0), 0.70, fc='white')
ax.add_artist(center_circle)
ax.axis('equal')
ax.set_title('% CO2 emission 2022', fontsize=12, y=1.1)
plt.show()
The five graphs above reported offer a comprehensive view over the contribution of each ship type on the total CO2 emissions throughout the years, from before Covid to after.
First of all, it is possible to notice how the five ship types chosen always cover around 70% of the global emissions, thus underlying their relevance in the case study. The remaining 30% is instead related to ships for which not enough data is available, or their influence due to the pandemic is not important for the kind of cargo transported or operations they are used for. About 80% of world's cargo is carried by sea. This justifies the approximately constant percentages through the years of the merchant vessels such as bulk carriers, container ships, LNG carriers and oil tankers. The first two always cover around 42% of the total donut chart with peak value in 2021, which can be accounted as Covid period. Furthermore, in 2022 to the lowest container ships percentage corresponds also the maximum for bulk carriers. This behaviour may be implied to a late response of the containers market to Covid.
The market seems to remain steady for oil tankers, which shows how the demand for oil was not influenced by Covid. This may implied to that part of the market which exploits oil derivatives for heating of houses and factories. On the other hand, LNG carriers cover a more importance slice of the chart in 2022 with respect to all previous years. As it can be expected, passenger ships score their lowest value in 2020, with increasingly higher percentages in the following years. This aligns with the population's desire to travel again after the quarantine period.
This section investigates the impact on the overall CO2 emissions of maritime transport in comparison to the broader trends in CO2 emissions across the European Economic Area (EEA). The first dataset provided for the comparison of the broader emission trends in the EEA is exported from the Emissions Database for Global Atmospheric Research (EDGAR) of the European Commission. This statistical dataset consists of the atmospheric emissions produced by the member countries of the European Union. For our specific trend, only CO2 emissions are necessary.
This dataset consists of emissions from different countries/regions and, in the latter part of the report, the total emissions from various sectors of industries that produce emissions.
These sectors include:
Since the goal of this graph is to compare the variation in the behavior of emission trends for the entire industry with the emissions of the maritime transport sector, the emissions from each sector in the EDGAR dataset are summarized per year. This summation is then normalized with respect to the maximum emission value, which was 3113 Mt CO2/year in the year 2017. This value serves as the benchmark for the maximum emissions. Therefore, we expect to see a downward trend in emissions production, and we will closely examine the influence of the COVID-19 pandemic on the emission trend.
In the graph, a second dataset representing the emission trend of the maritime sector is plotted. It should be noted that this dataset has been processed and introduced in the previous chapter of the report. For this specific graph, the total emissions from all ship type categories are summed and then normalized with respect to the maximum value in the EDGAR dataset. As a result, we expect the values to be around the 4% mark, which essentially represents the emission contribution of the maritime sector in the global emissions trend.
# Total Emissions
file_path_emissions = os.path.abspath("") + "\\DATA_PROCESSED\\df_emissions.csv"
df_emissions = pd.read_csv(file_path_emissions)
df_emissions = df_emissions.rename(columns={df_emissions.columns[0]: "Years"})
# Ship dataset
file_path_ships = os.path.abspath("") + "\\DATA_PROCESSED\\df_ship_co2_total.csv"
co2_tot = pd.read_csv(file_path_ships)
co2_tot_normalized = (co2_tot[co2_tot.columns[2]] / df_emissions[df_emissions.columns[1]].max() * 100)
#Plot size
fig, ax1 = plt.subplots(figsize=(12, 5))
# Plot Total Emissions
ax1.plot(df_emissions["Years"], df_emissions[df_emissions.columns[2]], color='b', label="Total Emissions")
ax1.set_xlabel("Time [years]")
ax1.set_ylabel("Normalized Total Emissions", color='b')
ax1.tick_params(axis='y', labelcolor='b')
ax2 = ax1.twinx()
ax2.plot(co2_tot["Reporting Period"], co2_tot_normalized, color='r', label="Shipping Emissions")
ax2.set_ylabel("Normalized Shipping Emissions", color='r')
ax2.tick_params(axis='y', labelcolor='r')
ax1.grid(True, which='both')
plt.title("Normalized Emissions over Time")
ax1.legend(loc='upper left', fontsize='small', labels=["Total Emissions"])
ax2.legend(loc='upper right', fontsize='small', labels=["Shipping Emissions"])
plt.show()
It should be noted that the graph starts from the year 2017, which serves as the benchmark and represents the maximum CO2 emissions for the creation of the graph. The graph is divided into two parts, with two different y-axis values: the left side represents the normalized data for the total emissions, and the right side represents the normalized emissions of the maritime sector.
The assumption that CO2 emissions would be close to approximately 3% - 4% seems to be validated. The trend for total emissions appears to follow a downward slope from the years 2017 to 2020, with the lowest amount of emissions occurring in 2020. This reduction is correlated with the beginning of restrictive measures implemented to address the COVID-19 pandemic, which temporarily shut down numerous industries. The COVID-19 pandemic played a significant role in the reduction of emissions. It should be noted that the goal to reduce emissions from all industry sectors by 2050 leads to the forecasted stabilization of the emission trend at around 90% of the previous maximum observed in 2017. The higher emission trend in 2021 is acceptable because industries restarted with fewer restrictions, leading to higher emission production.
The trend in total CO2 emissions for the shipping industry is largely similar, with one notable exception: the most significant decrease in emissions becomes apparent in the year 2021. This can be attributed to the combined effects of the COVID-19 pandemic and the implementation of stricter regulations aimed at reducing emissions within the maritime sector. These regulations include the EU's Emissions Trading System (EU ETS) and the emission reduction goals set by the International Maritime Organization (IMO) to be achieved by 2025. Although the pandemic had minimal impact on CO2 emissions in the shipping sector, it is important to recognize that this trend is consistent with the EU's current emission reduction policies and rules, which are based on the Paris Agreement. Although it was only temporary, the pandemic did contribute to a decrease in emissions, which supported ship owners' ongoing efforts to reduce emissions. It is anticipated that both sets of data will continue to show a decreasing trend, primarily driven by the EU's sustainability goals, which must be met in the pursuit of more environmentally responsible practices in the shipping industry. This trend reflects the collective efforts within the industry to align with these objectives and reduce its carbon footprint over time.
The aforementioned data highlights the industry's commitment to sustainability and demonstrates the continuous efforts to shift towards more ecologically conscious practices. It emphasizes how crucial regulations are to securing a more sustainable future for the maritime industry and the broader emission producing sectors.
After having analysed in detail the different aspects of COVID-19’s influence over maritime transportation and environmental sustainability within the European Economic Exclusive Area, general conclusions can be drawn.
COVID-19 had a noticeable impact on the shipment of goods for all the investigated countries within the EEA. Each country's shipping activity began to steadily decrease towards the end of 2019, reaching a local minimum around 2020. The recovery period after the pandemic varied from country to country. Furthermore, the most affected countries were typically smaller nations or those with less extensive shipping activity. The top shipping countries also experienced a decrease, which however never exceeded an average of 25%. Most states had returned to their pre-pandemic levels of sea trading around 2022. The most affected geographical regions appeared to be Eastern and Northwestern Europe, while Western Europe's sea trading activity seemed to be less affected.
It is clear that the pandemic had also a drastic impact on passenger travel in European countries. This can be seen in part 1 and part 3 of Question 2, where all countries experienced massive drops across all analyzed passenger transport modes. Some effects of the transport volume drops are even noticeable to this day, which is best demonstrated by the erratic return to norms of rail transport analysed. The impact of COVID-19 on passenger travel varied significantly from country to country, generally visible in parts 1 and 3 of Question 2, but best visualized by part 2, where the drop in normalized maritime passenger transport volume across European countries varied from 77.3 percentage points for Belgium to as low as 8.8 percentage points for Latvia.
As far as the CO2 emissions are concerned, most ship types show a decreasing trend, given by either lower time spent at sea or technological improvements such as carbon capture strategies and digital twins use for fuel efficiency. This is confirmed, for example, by container ships outperforming LNG carriers in emitted CO2, despite spending more time at sea. On the other hand, passenger vessels witnessed a great emissions reduction during the pandemic period, but later increased in 2022 to usual levels. Their contribution towards the total CO2 emissions is however not that relevant, despite the importance of such ships inside the maritime industry.
The analysis carried out in the last Question supports the fact that, within the shipping industry, a significant reduction in emissions was observed in 2021, attributed to a combination of the COVID-19 pandemic and the implementation of stricter emission-reduction regulations. This data underscores the industry's dedication to sustainability and its ongoing efforts to adopt more eco-friendly practices. It highlights the essential role of regulations in steering the maritime industry and other emission-producing sectors toward a more sustainable future. The consistent trend in reducing emissions signals a collective commitment to align with environmental objectives and reduce the industry's carbon footprint over time.
Nicola Bovo: Background research & visualisation & Question 3 & Introduction
Zacharias Zervos: Background research & conceptualisation & Question 4 & Question 2
Vaseileios Sideris: Data analysis & Data modelling & Question 1
Piotr Pietrzak: Data analysis & Data modelling & Question 2 & version control management
Davide Centorrino: Data analysis & visualisation & Question 3 & Conclusion
Question 1:
- Gross weight of goods transported: https://ec.europa.eu/eurostat/databrowser/bookmark/662cc15a-0555-4b7f-87c8-e48013aea8c0?lang=en
- Sea transport of goods: https://ec.europa.eu/eurostat/databrowser/view/TTR00009/default/table?lang=en
Question 2:
- Aviation passenger transport: https://ec.europa.eu/eurostat/databrowser/view/avia_paoc__custom_8077441/default/table?lang=en
- Maritime passenger transport: https://ec.europa.eu/eurostat/databrowser/view/MAR_PA_QM__custom_8077490/default/table?lang=en
- Rail passenger transport: https://ec.europa.eu/eurostat/databrowser/view/rail_pa_quartal__custom_8373712/default/table?lang=en
Question 3:
- CO2 emissions from maritime transport: https://data.europa.eu/data/datasets/co2-emissions-data?locale=en
Question 4:
- CO2 emissions data from maritime transport: https://data.europa.eu/data/datasets/co2-emissions-data?locale=en
- Overall emissions: https://edgar.jrc.ec.europa.eu/emissions_reports